/**
 *  将这些工具集成一个对象，然后抛射出去
 *  Created by lihao on 2018-03-27
 */

    let resData = require('./resData');

// 数字小于10时添加0
    function addZero(n) {
        if(n<10){
            return '0'+n
        } else {
            return n
        }
    }

// 获取当前时间，用于创建系统订单号
    function createSysId(id) {
        let t = new Date();//获取系统当前时间
        let a = t.getYear(); //获取当前年份(2位)
        let b = t.getFullYear(); //获取完整的年份(4位,1970-????)
        let c = t.getMonth()+1;//获取当前月份(0-11,0代表1月)
        let d = t.getDate(); //获取当前日(1-31)
        let e = t.getDay(); //获取当前星期X(0-6,0代表星期天)
        let f = t.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
        let g = t.getHours(); //获取当前小时数(0-23)
        let h = t.getMinutes(); //获取当前分钟数(0-59)
        let i = t.getSeconds(); //获取当前秒数(0-59)
        let j = t.getMilliseconds(); //获取当前毫秒数(0-999)
        let k = t.toLocaleDateString(); //获取当前日期
        let l = t.toLocaleTimeString(); //获取当前时间
        let m = t.toLocaleString(); //获取日期与时间
        let temSysId = 'BY'+b+'-'+addZero(c)+'-'+addZero(d)+'_'+addZero(g)+':'+addZero(h)+':'+addZero(i)+'_N'+id;
        return {
            sysId: temSysId,
            timeMs: f,
            timeNew: m
        }
    }

 // 格式化时间
 function parseTime(time, cFormat) {
    if (arguments.length === 0) {
        return null
    }
    const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
    let date;
    if (typeof time === 'object') {
        date = time
    } else {
        if (('' + time).length === 10) time = parseInt(time) * 1000;
        date = new Date(time)
    }
    const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
    };
    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key];
        if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1];
        if (result.length > 0 && value < 10) {
            value = '0' + value
        }
        return value || 0
    });
    return time_str
}

// 格式化数据  用于拼接sql
function format_data(arr){
    let temp = [];
    for(let i=0; i < arr.length; i++){
        let str = [];
        for(let key in arr[i]){
            str.push(arr[i][key])
        }
        temp.push('('+str.toString()+')')
    }
    return temp.toString() + ';'
}

// 用于产生 形如  ：  (?,?,?),(?,?,?),(?,?,?);
function into_params_num(n,m){
    let s = '';
    for(let i=0; i<n;i++){
        s += '(';
        for(let j=0;j<m;j++){
            s += '?,'
        }
        s=s.substring(0,s.length-1);
        s+='),'
    }
    return s.substring(0,s.length-1)+';'
}

/***
 *   格式化数据  用于拼接sql
 *    @param  arr      对应数据数组
 *    @param  arrStr   对应字段数组
 *    @param  id       系统订单号
 */

function format_data_imp_2(arr,arrStr,id){
    let temp = [];
    for(let i=0; i < arr.length; i++){
        for(let j = 0; j< arrStr.length; j++){
            if(arrStr[j] === 'orderId'){
                temp.push(id)
            } else {
                temp.push(arr[i][arrStr[j]])
            }
        }
    }
    return temp
}

// 将所有的数据 拼接为一个长字符串 ['BY2018-05-10_15:58:29_N2',2,'',1,'','','','','','BY2018-05-10_15:58:29_N2','A-49','teak','123','a','straight','BY2018-05-10_15:58:29_N2','A-37','creamyWhite','12','suit','straight']
function  obj2sql(obj){
    let o = {
        sql: '',
        data: []
    };
    for(let k in obj) {
        o.sql += obj[k].sql;
        o.data = o.data.concat(obj[k].value)
    }
    return o
}

// 将对象属性变成数组
function obj2arr(obj){
    let arr = [];
    for(let i in obj){
        arr.push[obj[i]]
    }
    return arr
}

// 获取订单数据
function get_order(obj){
        let temp = {},arr=[];
        if(obj){
            for(let key in obj){
                if(!(obj[key] instanceof Array)){
                    temp[key] = obj[key]
                }
            }
            arr.push(temp)
            return arr
        } else {
            return {}
        }
}

function urlsafe_base64_encode(str) {
    str = str.toString();
    let temp = str.replace(/\+/g,function(){
        return '-'
    });
    temp = str.replace(/\//g,function () {
        return '_'
    });
    return temp
}

/***
 *    将所有函数放在一个对象中，然后抛出去
 */


    const tools = {
        data: resData,
        createSysId: createSysId,
        format_data: format_data,
        format_data_imp_2: format_data_imp_2,
        get_order: get_order,
        parseTime: parseTime,
        urlsafe_base64_encode: urlsafe_base64_encode,
        obj2arr: obj2arr,
        obj2sql: obj2sql,
        into_params_num: into_params_num
    };

module.exports = tools;